package br.com.arg.aplica.model;

import java.io.Serializable;


import javax.persistence.Entity;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

import br.com.arg.aplica.util.Linguagem;
import br.com.arg.aplica.util.SituacaoRegra;

@Entity
@XmlRootElement
//@Table(name="CAMPO", uniqueConstraints = @UniqueConstraint(columnNames = {"formato", "nome"}))
public class Regra implements Serializable {
	/** Default value included to remove warning. Remove or modify at will. **/
	private static final long serialVersionUID = 1L;
	
	public Regra()
	{
		this.nome = "NovaRegraR1";
		this.descricao = "Descrição da regra NovaRegraR1";
		this.regra = "Z1>1 & Z1<10";
	}
	
	@Id
	@NotNull
	@GeneratedValue
	private int id;

	@NotNull
	@Size(min = 1, max = 32)
	private String nome;

	@NotNull
	@Size(min = 1, max = 255)
	private String descricao;

	@NotNull
	@Size(min = 1, max = 4096)
	private String regra;

	@Enumerated
	@NotNull
	private SituacaoRegra regraSituacao;

	@Enumerated
	@NotNull
	private Linguagem linguagem;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getRegra() {
		return regra;
	}

	public void setRegra(String regra) {
		this.regra = regra;
	}

	public SituacaoRegra getRegraSituacao() {
		return regraSituacao;
	}

	public void setRegraSituacao(SituacaoRegra regraSituacao) {
		this.regraSituacao = regraSituacao;
	}

	public Linguagem getLinguagem() {
		return linguagem;
	}

	public void setLinguagem(Linguagem linguagem) {
		this.linguagem = linguagem;
	}		
}
